package ar.edu.unq.persistencia.gpilla.operaciones;

import java.util.ArrayList;
import java.util.List;

import ar.edu.unq.persistencia.gpilla.Equipo;
import ar.edu.unq.persistencia.gpilla.PartidoSimple;
import ar.unq.edu.persistencia.gpilla.daos.PartidoSimpleDAO;

/**
 * TODO: description
 */
public class HistorialDeEmpates implements Operacion<List<Object[]>> {

    public HistorialDeEmpates() {
        super();
    }

    @Override
    public List<Object[]> ejecutar() {
        List<Object[]> triadas = PartidoSimpleDAO.getPartidosEmpatesEE();

        List<Object[]> resultado = new ArrayList<Object[]>();
        for (Object[] t : triadas) {
            if (t != null) {
                resultado.add(new Object[] { (Equipo) t[0], (Equipo) t[1],
                        (Long) t[2] + this.cant((Equipo) t[1], (Equipo) t[0], triadas) });
            }
        }

        for (Object[] o : resultado) {
            System.out.println(o[0] + " | " + o[1] + " | " + o[2]);
        }

        return resultado; // partidos;
    }

    private Long cant(final Equipo local, final Equipo visitante, final List<Object[]> partEmpates) {
        for (int i = 0; i < partEmpates.size(); i++) {
            Object[] part = partEmpates.get(i);
            if (part != null) {
                if (part[0].equals(local) && part[1].equals(visitante)) {
                    partEmpates.set(i, null);
                    return (Long) part[2];
                }
            }
        }
        return new Long(0);
    }

    private String getCantEmpates(final List<PartidoSimple> partidos) {
        // int contador = 0;
        // for (PartidoSimple partidoSimple : partidos) {
        // if (partidoSimple.getGanador() == null) {
        // contador += 1;
        // }
        // }
        return Integer.toString(partidos.size()); // Integer.toString(contador);
    }

    // private String getCantGanados(final List<PartidoSimple> partidos, final Equipo equipo) {
    // int contador = 0;
    // for (PartidoSimple partido : partidos) {
    // if (partido.getGanador() == equipo) {
    // contador += 1;
    // }
    // }
    // return Integer.toString(contador);
    // }
}
